#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
//int getmin(vector<int>& arr)
//{
//    int mindata = 10000;
//    for (auto e : arr)
//    {
//        mindata = min(mindata, e);
//    }
//    return mindata;
//}
//int main()
//{
//    int n, mindata = 10000, maxnum = 0,sum = 0;
//    cin >> n;
//    vector<int> arr(n);
//    for (auto& e : arr)
//    {
//        int tmp;
//        cin >> tmp;
//        e = tmp;
//        sum += e;
//        mindata = min(mindata, e);
//    }
//    
//    while (arr[n - 1] > mindata)
//    {
//        sort(arr.begin(), arr.end());
//        mindata = getmin(arr);
//        arr[0] += 1;
//        arr[n - 1] -= 1;
//    }
//    map<int, int> count;
//    for (auto e : arr)
//    {
//        count[e]++;
//        maxnum = max(maxnum, count[e]);
//    }
//    if (maxnum == n)
//        cout << n;
//    else
//        cout << n - 1;
//    return 0;
//}
class Solution {
    typedef pair<int, int> PII;
    int dx[4] = { -1, 1, 0, 0 };
    int dy[4] = { 0, 0, -1, 1 };

public:
    int numIslands(vector<vector<char>>& grid) {
        int m = grid.size(), n = grid[0].size(), ret = 0;
        vector<vector<bool>> flag(m, vector<bool>(n, false));
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (flag[i][j] == false && grid[i][j] == '1') {
                    ret++;
                    flag[i][j] = true;
                    queue<PII> q;
                    q.push({ i, j });
                    while (q.size()) {
                        auto tmp = q.front();
                        int a = tmp.first;
                        int b = tmp.second;
                        q.pop();
                        for (int t = 0; t < 4; t++) {
                            int x = a + dx[t];
                            int y = b + dy[t];
                            if (x < m && x >= 0 && y < n && y >= 0 && grid[x][y] == '1' && !flag[x][y]) {
                                flag[x][y] = true;
                                q.push({ x,y });
                            }
                        }

                    }
                }
            }
        }
        return ret;
    }
};

int main()
{
    vector<vector<char>> grid(4,vector<char>(5));
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cin >> grid[i][j];
        }
    }
   cout<<Solution().numIslands(grid);
    return 0;
}

